/*
 *  Programa para enviar un SMS usando un módulo GPRS
    con placa Arduino por AjpdSoft
 */

/* MUY IMPORTANTE

  Cuando se ejecute el programa, el arduino debe estar alimentado por la toma de corriente, no por el usb.
  Los dos jumpers de la placa de gprs deben estar en la posición "Arduino", hacia el interior de la placa.
  En esa posición, no se puede descargar el programa en el Arduino con el shield pinchado. Da error "not in sync".

*/


int pinLED = 13;
int pinActivarGPRS = 2;  // pin para activar el módulo GPRS

int numeroSMSEnviar = 1; // numero de SMS a enviar
int contador = 0; //para solo repetir una vez el loop


//int simPinNumber = ****;

//procedimiento para activar el módulo GPRS
void activarModuloGPRS()
{
  digitalWrite(pinActivarGPRS, HIGH);
  delay(2000);
  digitalWrite(pinActivarGPRS, LOW);
}

void ledBlink(int on, int off)
{
    digitalWrite(pinLED, HIGH);
    delay(on);
    digitalWrite(pinLED, LOW);
    delay (off);
}
  

void setup()
{
  pinMode(pinLED, OUTPUT);
  pinMode(pinActivarGPRS, OUTPUT);

  Serial.begin(19200); //velocidad de conexión con módulo GPRS
    
  activarModuloGPRS(); //activar el módulo GPRS
  
  //esperamos 20 segundos a que se active el módulo GPRS
  for (int wait = 0; wait < 10; wait++)
    ledBlink(1000,1000); 
  
  //Enviamos el pin de desbloqueo de la tarjeta
  /*
  Serial.print("AT+CPIN=");
  Serial.print(simPinNumber);
  Serial.print(";");
  */
  
  Serial.println("AT+CMGF=1"); //activamos el modo SMS
}

void loop()
{
  

  while (contador < numeroSMSEnviar)
  {
    //Destello 5 veces indica inicio
    for (int i = 0; i < 5 ; i++)
      ledBlink(100, 100);
    
    delay(1500);
    Serial.print("AT+CMGS="); // comando AT para enviar SMS
    Serial.write(34);   // enviar caracter "
    Serial.print("653554133"); // numero de movil receptor del SMS
    Serial.write(34);  //  enviar caracter "
    Serial.println("");
    delay(1500); 
    Serial.print("Envio SMS desde Arduino"); //texto del SMS
    delay(500);
    Serial.write(0x1A); // final del SMS, comando 1A (hex)
       
    delay(10000);        

    contador++;    
  }

  if (contador == numeroSMSEnviar){
    Serial.println("AT*PSCPOF");  // desactivar el módulo GPRS
    contador++;
    
    //Destello 3 veces indica fin
    for (int i = 0; i < 3 ; i++)
      ledBlink(100,100);
  
    
  }
  
  
}


